#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
提取商品链接和商品货号的脚本
使用BeautifulSoup解析HTML表格，提取商品链接和货号信息
"""

from bs4 import BeautifulSoup
import json
import csv
import os


def extract_product_info(html_file_path):
    """
    从HTML文件中提取商品链接和货号信息
    
    Args:
        html_file_path (str): HTML文件路径
        
    Returns:
        list: 包含商品信息的字典列表
    """
    # 读取HTML文件
    with open(html_file_path, 'r', encoding='utf-8') as file:
        html_content = file.read()
    
    # 使用BeautifulSoup解析HTML
    soup = BeautifulSoup(html_content, 'html.parser')
    
    # 找到id为table1的表格
    table = soup.find('table', id='table1')
    if not table:
        print("未找到id为table1的表格")
        return []
    
    # 提取所有行（跳过表头）
    rows = table.find_all('tr')[1:]  # 跳过第一行（表头）
    
    products = []
    
    for row in rows:
        # 找到第一列（产品型号列）
        first_cell = row.find('td')
        if not first_cell:
            continue
            
        # 找到链接
        link_tag = first_cell.find('a')
        if not link_tag:
            continue
            
        # 提取链接和货号
        product_link = link_tag.get('href', '')
        product_code = link_tag.text.strip()
        
        # 添加到产品列表
        products.append({
            'product_code': product_code,
            'product_link': product_link
        })
    
    return products


def save_to_json(products, output_file):
    """
    将产品信息保存为JSON文件
    
    Args:
        products (list): 产品信息列表
        output_file (str): 输出文件路径
    """
    with open(output_file, 'w', encoding='utf-8') as file:
        json.dump(products, file, ensure_ascii=False, indent=4)
    print(f"产品信息已保存到 {output_file}")


def save_to_csv(products, output_file):
    """
    将产品信息保存为CSV文件
    
    Args:
        products (list): 产品信息列表
        output_file (str): 输出文件路径
    """
    with open(output_file, 'w', newline='', encoding='utf-8') as file:
        writer = csv.DictWriter(file, fieldnames=['product_code', 'product_link'])
        writer.writeheader()
        writer.writerows(products)
    print(f"产品信息已保存到 {output_file}")


def main():
    """主函数"""
    # HTML文件路径
    html_file = '/Users/apple/project/uv_basic/prodes.html'
    
    # 检查文件是否存在
    if not os.path.exists(html_file):
        print(f"错误: 文件 {html_file} 不存在")
        return
    
    # 提取产品信息
    print("正在提取产品信息...")
    products = extract_product_info(html_file)
    
    if not products:
        print("未找到任何产品信息")
        return
    
    print(f"找到 {len(products)} 个产品")
    
    # 输出结果
    for product in products:
        print(f"货号: {product['product_code']}, 链接: {product['product_link']}")
    
    # 保存为JSON文件
    json_output = '/Users/apple/project/uv_basic/product_info.json'
    save_to_json(products, json_output)
    
    # 保存为CSV文件
    csv_output = '/Users/apple/project/uv_basic/product_info.csv'
    save_to_csv(products, csv_output)


if __name__ == '__main__':
    main()